package com.yy.wga.pay.feign.request;

import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import org.hibernate.validator.constraints.Range;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Map;

/**
 * .Dat
 */

/**
 * 微信支付订单创建请求体
 * @author guochao
 * @date 2021/6/5
 */
@Data
public class CreatePrePayOrderRequest {

    /**
     * 终端平台类型（请求头必传） 1:ANDROID 2:IOS 3:js", hidden = tru
     */
    @NotNull(message = "sysType为空")
    @Range(min = 1, max = 3, message = "终端平台类型错误")
    private Integer sysType;

    /**
     * 用户id
     */
    @NotNull(message = "用户id不能为空")
    private Long userId;

    /**
     * openId，微信js支付时必传
     */
    private String openId;

    /**
     * 支付方式，1-微信 2-支付宝
     */
    @NotNull(message = "支付方式不能为空")
    @Range(min = 1, max = 1, message = "支付方式错误")
    private Integer payChannel;

    /**
     * 交易类型 1:JSAPI支付（或小程序支付）、2:Native支付、3:app支付，4:H5支付
     */
    @NotNull(message = "交易类型不能为空")
    private Integer payType;

    /**
     * 商品描述
     */
    private String description;

    /**
     * 内部订单号", required = tru
     */
    @JSONField(name = "out_trade_no")
    @NotBlank(message = "订单号为空")
    private String outTradeNo;

    /**
     * 订单标题", required = tru
     */
    private String subject;

    /**
     * 附加数据，在查询API和支付通知中原样返回，可作为自定义参数使用
     * 示例值：自定义数据
     */
    /**
     * 附加数据
     */
    private String attach;


    /**
     * 订单金额 单位分
     */
    private Integer amount;

    /**
     * 支付订单类型 1、购买商品
     */
    private Integer type;

    /**
     * h5支付完成后跳转地址
     */
    private String h5ReturnUrl;

    /**
     * 业务参数，k-v格式，value只接受字符串，目前只有支付宝h5支付时使用
     */
    private Map<String, String> businessParams;
}
